package com.itheima.d10_parse_annotation;
/*
需求：注解解析的案例
分析
定义注解BookInfo，要求如下：
        
- 包含属性：String value()   书名
        - 包含属性：double price()  价格，默认值为 100
        - 包含属性：String[] authors() 多位作者
        - 限制注解使用的位置：类和成员方法上
        - 指定注解的有效范围：RUNTIME
定义BookStore类，在类和成员方法上使用BookInfo注解
定义AnnotationDemo01测试类获取BookInfo注解上的数据

 */



import org.junit.Test;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Arrays;

public class Demo01 {
@Test
    public  void parseAnnotation() throws NoSuchMethodException {
        Class<BookStore> cls = BookStore.class;

        if(cls.isAnnotationPresent(BookInfo.class)){
            BookInfo bookInfo = cls.getDeclaredAnnotation(BookInfo.class);
            double price = bookInfo.price();
            String[] authors = bookInfo.authors();
            String value = bookInfo.value();

            System.out.println(value + ":" + price + ":" + Arrays.toString(authors));

        }

         Method sellMethod = cls.getDeclaredMethod("sell");
        if(sellMethod.isAnnotationPresent(BookInfo.class)){
            BookInfo sellMethodAnnotation = sellMethod.getAnnotation(BookInfo.class);
            double price = sellMethodAnnotation.price();
            String[] authors = sellMethodAnnotation.authors();
            String value = sellMethodAnnotation.value();

            System.out.println(value + ":" + price + ":" + Arrays.toString(authors));
        }
}
}
